<?php

namespace App\validate;

use think\Validate;
use think\facade\Db;
use think\db\exception\{DataNotFoundException, DbException, ModelNotFoundException};

class BatchBoxDropValidate extends Validate
{
    /**
     * 定义验证规则
     * 格式：'字段名' =>  ['规则1','规则2'...]
     *
     * @var array
     */
    protected $rule = [
        'box_id' => 'require|checkBoxId',
        'num' => 'require|number',
        'desc' => 'require',
        'date1' => 'require',
        'date2' => 'require',
    ];

    /**
     * 定义错误信息
     * 格式：'字段名.规则名' =>  '错误信息'
     *
     * @var array
     */
    protected $message = [
        'box_id.require' => '请选择要空投的盲盒',
        'num.require' => '请输入要空投的盲盒的数量',
        'num.number' => '要空投的盲盒的数量只能是数字',
        'desc.require' => '请输入定向空投人员',
        'date1.require' => '请输入空投的时间（年月日）',
        'date2.require' => '请输入空投的时间（时分秒）',
    ];

    /**
     * @param $box_id
     * @return bool|string
     * @throws DataNotFoundException
     * @throws DbException
     * @throws ModelNotFoundException
     */
    public function checkBoxId($box_id)
    {
        $boxInfo = Db::name('box')->where('id', $box_id)->find();
        if (empty($boxInfo)) {
            return '选择要空投的盲盒id不存在';
        }
        return true;
    }
}
